From: Florian Müllner Date: Sun, 19 Mar 2017 13:31:19 +0000 (+0100) Subject: weather: Take global location switch into account X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~419 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=74e1058183b0d22a4caaa80710778c8f2e576e2d;p=gnome-shell.git weather: Take global location switch into account The setting to globally disable location settings altogether isn't handled by the geoclue service itself, but by the authorization agent. This means that: - it doesn't apply to system components (which gnome-shell is now considered[0]) - it doesn't apply once the geoclue connection has been authorized However users can reasonably expect that we won't use location services after they disabled them, so handle the setting explicitly. [0] https://cgit.freedesktop.org/geoclue/commit/?id=a4cef6c0ad08 https://bugzilla.gnome.org/show_bug.cgi?id=780252 --- diff --git a/js/misc/weather.js b/js/misc/weather.js index 04e3295dc..31ca19261 100644 --- a/js/misc/weather.js +++ b/js/misc/weather.js @@ -28,6 +28,10 @@ const WeatherClient = new Lang.Class({ this._gclueStarting = false; this._gclueLocationChangedId = 0; + this._locationSettings = new Gio.Settings({ schema_id: 'org.gnome.system.location' }); + this._locationSettings.connect('changed::enabled', + Lang.bind(this, this._updateAutoLocation)); + this._world = GWeather.Location.get_world(); let providers = GWeather.Provider.METAR | @@ -82,7 +86,8 @@ const WeatherClient = new Lang.Class({ }, get _useAutoLocation() { - return this._autoLocationRequested; + return this._autoLocationRequested && + this._locationSettings.get_boolean('enabled'); }, _loadInfo: function() { @@ -174,6 +179,10 @@ const WeatherClient = new Lang.Class({ this._autoLocationRequested = useAutoLocation; + this._updateAutoLocation(); + }, + + _updateAutoLocation: function() { this._updateLocationMonitoring(); if (this._useAutoLocation)